package com.cll.context;

//threadLocal的工具类
//ThreadLocal 并不是一个Thread，而是Thread的局部变量。
//ThreadLocal为每个线程提供单独一份存储空间，具有线程隔离的效果，只有在线程内才能获取到对应的值，线程外则不能访问。
//底层使用Entry储存数据,ThreadLocal对象本身作为key,数据作为value
//拦截器解析令牌jwt得到员工id写入ThreadLocal,在业务层save方法从ThreadLocal获取员工id

//当想要这一个线程中有多个局部变量 再存一个数据   ThreadLocal<Long>改为ThreadLocal<map>
public class BaseContext {

    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    //存一个id数据
    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    //获取id数据
    public static Long getCurrentId() {
        return threadLocal.get();
    }

    //删除不想要的id数据
    public static void removeCurrentId() {
        threadLocal.remove();
    }

}
